// pages/index/index.js
import * as echarts from '../../components/ec-canvas/echarts'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {},
    chartData: [],
    ec: {
      onInit: initChart
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const userInfo = wx.getStorageSync('userInfo')
    if (!userInfo) {
      wx.redirectTo({
        url: '/pages/login/index'
      })
      return
    }
    
    this.setData({
      userInfo
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  handleLogout() {
    wx.clearStorageSync()
    wx.redirectTo({
      url: '/pages/login/index'
    })
  },

  // 选择文件上传
  chooseFile() {
    wx.chooseMessageFile({
      count: 1,
      type: 'file',
      extension: ['xlsx'],
      success: res => {
        const tempFile = res.tempFiles[0]
        this.uploadFile(tempFile)
      }
    })
  },

  // 上传文件到云存储
  uploadFile(tempFile) {
    wx.showLoading({
      title: '上传中...'
    })
    
    const cloudPath = `excel/${Date.now()}-${tempFile.name}`
    
    wx.cloud.uploadFile({
      cloudPath,
      filePath: tempFile.path,
      success: res => {
        this.parseExcel(res.fileID)
      },
      fail: err => {
        wx.hideLoading()
        wx.showToast({
          title: '上传失败',
          icon: 'none'
        })
      }
    })
  },

  parseExcel(fileID) {
    wx.cloud.callFunction({
      name: 'parseExcel',
      data: {
        fileID
      }
    }).then(res => {
      wx.hideLoading()
      if (res.result.success) {
        this.setData({
          chartData: res.result.data
        })
        // 更新图表
        this.updateChart()
      } else {
        wx.showToast({
          title: '解析失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      wx.hideLoading()
      wx.showToast({
        title: '解析失败',
        icon: 'none'
      })
    })
  }
})

function initChart(canvas, width, height, dpr) {
  const chart = echarts.init(canvas, null, {
    width: width,
    height: height,
    devicePixelRatio: dpr
  })
  canvas.setChart(chart)
  
  // 设置图表配置项
  const option = {
    // 根据实际数据配置图表选项
  }
  
  chart.setOption(option)
  return chart
}